package com.zx._01_基础._010_util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.junit.Test;

/**
 * @version v1.0
 * @Project: knowledge-jdk
 * @Title: DateFormatTest
 *         格式化说明
 *         http://www.foxtable.com/webhelp/topics/0362.htm
 * @author: zhangxue01
 * @date: 2020-10-23 10:33:56
 * @company: zhangxue
 * @Copyright: Copyright (c) 2015
 */
public class DateFormatTest {

    @Test
    public void test1() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(new Date());
        System.out.println(format);

        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
        String format2 = sdf2.format(new Date());
        System.out.println(format2);
    }

    //1.
    @Test
    public void test01() {
        Date date = new Date();    // 创建日期对象
        System.out.printf("全部日期和时间信息：%tc%n", date);    // 全部日期和时间信息：星期日十月28 13:53:24 CST 2007
        System.out.printf("年-月-日格式：%tF%n", date);                    // 年-月-日格式：2007-10-28
        System.out.printf("月/日/年格式：%tD%n", date);                    // 月/日/年格式：10/28/07
        System.out.printf("HH:MM:SS PM格式（12时制）：%tr%n", date);    // HH:MM:SS PM格式（12时制）：01:53:24 下午
        System.out.printf("HH:MM:SS格式（24时制）：%tT%n", date);        // HH:MM:SS格式（24时制）：13:53:24
        System.out.printf("HH:MM格式（24时制）：%tR", date);            // HH:MM格式（24时制）：13:53
    }

    //2.
    @Test
    public void test02() {
        Date date = new Date();    // 创建日期对象
        String str = String.format(Locale.US, "英文月份简称：%tb", date);        // 英文月份简称：Oct
        System.out.println(str);
        System.out.printf("本地月份简称：%tb%n", date);                    // 本地月份简称：十月
        str = String.format(Locale.US, "英文月份全称：%tB", date);
        System.out.println(str);                                        // 英文月份全称：October
        System.out.printf("本地月份全称：%tB%n", date);                    // 本地月份全称：十月
        str = String.format(Locale.US, "英文星期的简称：%ta", date);            //
        System.out.println(str);                                        //  英文星期的简称：Sun
        System.out.printf("本地星期的简称：%tA%n", date);                    // 年的前两位数字（不足两位前面补0）：20
        System.out.printf("年的前两位数字（不足两位前面补0）：%tC%n", date);    // 年的后两位数字（不足两位前面补0）：07
        System.out.printf("年的后两位数字（不足两位前面补0）：%ty%n", date);    // 一年中的天数（即年的第几天）：301
        System.out.printf("一年中的天数（即年的第几天）：%tj%n", date);        // 两位数字的月份（不足两位前面补0）：10
        System.out.printf("两位数字的月份（不足两位前面补0）：%tm%n", date);    // 两位数字的月份（不足两位前面补0）：10
        System.out.printf("两位数字的日（不足两位前面补0）：%td%n", date);    // 两位数字的日（不足两位前面补0）：28
        System.out.printf("月份的日（前面不补0）：%te", date);                // 月份的日（前面不补0）：28
    }

    //3.
    @Test
    public void test03() {
        Date date = new Date(); // 创建日期对象
        System.out.printf("2位数字24时制的小时（不足2位前面补0）:%tH%n", date);
        System.out.printf("2位数字12时制的小时（不足2位前面补0）:%tI%n", date);
        System.out.printf("2位数字24时制的小时（前面不补0）:%tk%n", date);
        System.out.printf("2位数字12时制的小时（前面不补0）:%tl%n", date);
        System.out.printf("2位数字的分钟（不足2位前面补0）:%tM%n", date);
        System.out.printf("2位数字的秒（不足2位前面补0）:%tS%n", date);
        System.out.printf("3位数字的毫秒（不足3位前面补0）:%tL%n", date);
        System.out.printf("9位数字的毫秒数（不足9位前面补0）:%tN%n", date);
        String str = String.format(Locale.US, "小写字母的上午或下午标记(英)：%tp", date);
        System.out.println(str);  // 输出字符串变量str的内容
        System.out.printf("小写字母的上午或下午标记（中）：%tp%n", date);
        System.out.printf("相对于GMT的RFC822时区的偏移量:%tz%n", date);
        System.out.printf("时区缩写字符串:%tZ%n", date);
        System.out.printf("1970-1-1 00:00:00 到现在所经过的秒数：%ts%n", date);
        System.out.printf("1970-1-1 00:00:00 到现在所经过的毫秒数：%tQ%n", date);
    }

}
